The groundtruth video is

The targetted affordance is door

The link placement code is

from articulate_anything.api.odio_urdf import *


def partnet_103480(input_dir, links) -> Robot:
    pred_robot = Robot(input_dir=input_dir, name="washing_machine")
    pred_robot.add_link(links['base'])
    pred_robot.add_link(links['washing_machine_body'])
    pred_robot.add_joint(Joint("base_to_washing_machine_body",
                         Parent("base"),
                         Child("washing_machine_body"),
                         type="fixed"),
                         )
    pred_robot.add_link(links['door'])
    pred_robot.place_relative_to('door', 'washing_machine_body',
                                 placement="front",
                                 clearance=0.0)
    pred_robot.add_link(links['knob'])
    pred_robot.place_relative_to('knob', 'washing_machine_body',
                                 placement="front",
                                 clearance=0.0)

    for button_idx in range(6):
        button_link = "button" if button_idx == 0 else f"button_{button_idx+1}"
        pred_robot.add_link(links[button_link])
        pred_robot.place_relative_to(button_link, 'washing_machine_body',
                                     placement="front",
                                     clearance=0.0)
    return pred_robot